package com.ruoyi.enums;

/**
 * 日报状态枚举
 * 表示日报的不同状态
 */
public enum DailyReportStatus {
    /**
     * 草稿状态
     */
    DRAFT(0, "草稿"),

    /**
     * 提交状态
     */
    SUBMITTED(1, "已提交");

    private final int code;
    private final String description;

    DailyReportStatus(int code, String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 获取状态码
     *
     * @return 状态码
     */
    public int getCode() {
        return code;
    }

    /**
     * 获取状态描述
     *
     * @return 状态描述
     */
    public String getDescription() {
        return description;
    }

    /**
     * 根据状态码获取对应的枚举
     *
     * @param code 状态码
     * @return 对应的枚举
     */
    public static DailyReportStatus fromCode(int code) {
        for (DailyReportStatus status : values()) {
            if (status.code == code) {
                return status;
            }
        }
        throw new IllegalArgumentException("未知的状态码: " + code);
    }

    /**
     * 根据状态描述获取对应的状态码
     *
     * @param description 状态描述
     * @return 对应的状态码
     */
    public static int getCodeByDescription(String description) {
        for (DailyReportStatus status : values()) {
            if (status.description.equals(description)) {
                return status.code;
            }
        }
        throw new IllegalArgumentException("未知的状态描述: " + description);
    }

    /**
     * 根据状态描述获取状态码的字符串形式
     *
     * @param description 状态描述
     * @return 状态码的字符串形式
     */
    public static String getCodeAsStringByDescription(String description) {
        for (DailyReportStatus status : values()) {
            if (status.description.equals(description)) {
                return String.valueOf(status.code);
            }
        }
        throw new IllegalArgumentException("未知的状态描述: " + description);
    }
}
